// subpackage_volleyball/notifications_details/notifications_details.ts
Page({
  /**
   * 页面的初始数据
   */
  data: {
    notification: {
      teamLogo: '/static/images/team-logo.png', // 默认队徽
      teamName: '排球一队',
      publishTime: '2023-08-16 14:30',
      isRead: false,
      title: '本周训练时间调整通知',
      type: 'training', // 'training' 或 'match'
      // 训练变动相关字段
      originalTime: '2023-08-19 16:00-18:00',
      originalVenue: '学校体育馆',
      newTime: '2023-08-20 15:00-17:00',
      newVenue: '市体育中心',
      reason: '因台风天气调整',
      // 比赛提醒相关字段
      opponent: '排球三队',
      matchTime: '2023-08-25 16:00',
      matchVenue: '市体育中心',
      additionalInfo: '请提前30分钟到场热身，携带运动装备',
      // 关联资料
      location: {
        address: '市体育中心，朝阳区体育路100号',
        latitude: 39.9042,
        longitude: 116.4074
      },
      // 周次和训练安排
      weekNumber: 33,
      trainingSchedule: [
        {
          date: '2023-08-21',
          coach: '王教练',
          content: '发球训练、接发球练习、战术配合',
          duration: '2小时'
        },
        {
          date: '2023-08-23',
          coach: '李教练',
          content: '拦网训练、进攻战术、体能训练',
          duration: '2.5小时'
        },
        {
          date: '2023-08-25',
          coach: '张教练',
          content: '赛前准备、实战模拟、心理辅导',
          duration: '3小时'
        }
      ],
      // 近一周比赛安排
      matchSchedule: [
        {
          date: '2023-08-26',
          time: '16:00-18:00',
          opponent: '排球二队',
          venue: '市体育中心'
        },
        {
          date: '2023-08-28',
          time: '15:00-17:00',
          opponent: '排球三队',
          venue: '学校体育馆'
        }
      ],
      // 回复
      replies: [
        { user: '张明', content: '已收到' },
        { user: '李华', content: '无法参加，有事请假' }
      ]
    },
    showReplySection: false,
    replyContent: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options: any) {
    // 这里可以从options中获取通知ID，然后调用API获取通知详情
    // 为了演示，我们使用默认数据
    console.log('通知详情页加载', options);
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 可以在这里更新通知状态
  },

  /**
   * 返回上一页
   */
  navigateBack() {
    wx.navigateBack({
      delta: 1
    });
  },

  /**
   * 显示菜单
   */
  showMenu() {
    // 可以保留此方法，以防其他地方调用
    wx.showActionSheet({
      itemList: ['收藏', '转发给队友', '举报'],
      success: (res) => {
        switch (res.tapIndex) {
          case 0:
            this.收藏通知();
            break;
          case 1:
            this.转发给队友();
            break;
          case 2:
            this.举报通知();
            break;
        }
      }
    });
  },

  /**
   * 收藏通知
   */
  收藏通知() {
    wx.showToast({
      title: '已收藏',
      icon: 'success'
    });
  },

  /**
   * 转发给队友
   */
  转发给队友() {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    });
  },

  /**
   * 举报通知
   */
  举报通知() {
    wx.showModal({
      title: '举报通知',
      content: '确定要举报此通知吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showToast({
            title: '举报已提交',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 切换已读/未读状态
   */
  toggleReadStatus() {
    const isRead = !this.data.notification.isRead;
    this.setData({
      'notification.isRead': isRead
    });
    wx.showToast({
      title: isRead ? '已标记为已读' : '已标记为未读',
      icon: 'success'
    });
  },

  /**
   * 设置提醒
   */
  setReminder() {
    wx.showModal({
      title: '设置提醒',
      content: '确定要添加提醒到日历吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showToast({
            title: '提醒已添加到日历',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 预览文件
   */
  previewFile(e: any) {
    const index = e.currentTarget.dataset.index;
    // 报错提示 notification 对象上不存在 attachments 属性
    // 因此需要在 data 初始化时添加 attachments 属性，这里临时模拟空数组处理
    const file = (this.data.notification as any).attachments?.[index];
    wx.showToast({
      title: `预览${file.name}`,
      icon: 'none'
    });
    // 实际开发中，这里可以调用wx.downloadFile和wx.openDocument
  },

  /**
   * 导航到位置
   */
  navigateToLocation() {
    const location = this.data.notification.location;
    wx.openLocation({
      latitude: location.latitude,
      longitude: location.longitude,
      name: '比赛场地',
      address: location.address
    });
  },

  /**
   * 切换回复区域显示
   */
  toggleReplySection() {
    this.setData({
      showReplySection: !this.data.showReplySection
    });
  },

  /**
   * 回复输入
   */
  onReplyInput(e: any) {
    this.setData({
      replyContent: e.detail.value
    });
  },

  /**
   * 发送回复
   */
  sendReply() {
    if (!this.data.replyContent.trim()) {
      wx.showToast({
        title: '回复内容不能为空',
        icon: 'none'
      });
      return;
    }

    // 模拟发送回复
    const replies = [...this.data.notification.replies];
    replies.push({
      user: '当前用户',
      content: this.data.replyContent
    });

    this.setData({
      'notification.replies': replies,
      replyContent: '',
      showReplySection: false
    });

    wx.showToast({
      title: '回复已发送',
      icon: 'success'
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: this.data.notification.title,
      path: `/subpackage_volleyball/notifications_details/notifications_details`
    };
  }
});